Typically applications for a user device are coded with a predetermined set of features and functionalities. During the development of these applications, the applications are also coded to receive particular types of data inputs and to output some specified data. This provides predictability and application stability, but does not allow applications to communicate with other applications that may use different types of data conventions. In order to change the functionality or operation of an application, the source code of the application has to be modified and the user then has to download and/or install the modified version or release of the application. Modifying source code and releasing applications requires a significant amount of time and effort by developers and is not practical on a case-by-case basis. It is desirable to provide the ability for multiple applications to work cooperatively.